package com.lxy.file.service;


import com.lxy.file.common.Result;
import com.lxy.file.dto.FileChunkDTO;
import com.lxy.file.dto.MergeDTO;

import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.Future;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;

/** 分块上传接口
 * @author LiuXiaoYu
 * @date 2021/9/3- 17:10
 */
public interface IUploadService {

    /**
     * 检查文件是否存在，如果存在则跳过该文件的上传，如果不存在，返回需要上传的分片集合
     * @param chunkDTO 分块对象
     * @return 通用结果
     */
    Result<?> checkChunkExist(FileChunkDTO chunkDTO);


    /**
     * 上传分块文件
     * @param chunkDTO 分块对象
     * @return 通用结果返回
     */
    CompletableFuture<Result<String>> uploadChunk(FileChunkDTO chunkDTO);


    /**
     * 手动合并所有分块文件
     * @param mergeDTO
     * @return
     */
    Result<?> manualMerge(MergeDTO mergeDTO);
}
